<?php
/*
 * Condições do teste:
 *
 * - O usuário "fabiofeliciano@di.ufpb.br" está associado com a senha "123456"
 * - Bolao Teste 5, num deve estar cadastrado no banco de dados
 *
 *  - Bolao Teste 1, deve estar cadastrado no banco de dados e ter sido criado pelo
 *  - usuário "fabiofeliciano@di.ufpb.br"
 *
 *
*/

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
require_once 'Conexao.php';

class TesteConvidarAmigosParaBolao extends PHPUnit_Extensions_SeleniumTestCase{

        protected $id_email;
        protected $remocaoBD = "DELETE FROM participantes_bolao
        WHERE email_participante=email@hotmail.com";
        protected $receivedCon;
        protected $arrOfEmailToDelete = array(0 =>"email@hotmail.com" , 1=> "email2@hotmail.com",2 => "email3@hotmail.com",3 => "email4@hotmail.com");

    protected function setUp() {

        $this->setBrowser("*firefox");
        $this->setBrowserUrl("http://localhost/");

    }

    protected function tearDown() {


    }

    public function logonUser(){

        $this->open("/bolao/convidar");
        $this->waitForPageToLoad("30000");
        //$this->setSleep(3);
        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");

    }

     /**
     * @expectedException PHPUnit_Framework_Exception
     */
     public function testParaBolaoInvalido(){

        $this->logonUser();
        
        $this->waitForPageToLoad("30000");

        //$this->select("nomeBolao", "label=Bolão Teste 1");

        try {
            $this->select("nomeBolao", "label=Bolao Teste 5");
        } catch (PHPUnit_Framework_Exception $e) {
            $this->assertTrue(TRUE);
            //array_push($this->verificationErrors, $e->toString());
            return;
        }

        //Excessao Esperada nao foi levantada
        $this->assertTrue(FALSE);

    }


    public function testParaBolaoVazio(){

        $this->logonUser();

        $this->type("emails", "joedson7@hotmail.com");

        $this->select("nomeBolao", "label=");

        $this->click("convidarAmigos");

        try {
            $this->verifyTextPresent($this->isTextPresent("Você digitou algum e-mail errado ou deixou o campo abaixo vazio. Tente novamente."));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

    }

    public function testParaEmailInvalido(){

        $this->logonUser();

        $this->type("emails", "joedson7@,12332");

        $this->select("nomeBolao", "label=Bolão Teste 1");

        $this->click("convidarAmigos");

        $this->waitForPageToLoad("30000");

        try {
            $this->verifyTextPresent($this->isTextPresent("Você digitou algum e-mail errado ou deixou o campo abaixo vazio. Tente novamente."));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

    }

    public function testParaEmailVazio(){

        $this->logonUser();

        $this->type("emails", "");

        $this->select("nomeBolao", "label=Bolão Teste 1");

        $this->click("convidarAmigos");

        $this->waitForPageToLoad("30000");

        try {
            $this->verifyTextPresent($this->isTextPresent("Você digitou algum e-mail errado ou deixou o campo abaixo vazio. Tente novamente."));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

    }

    public function testParaSucesso(){

        $this->logonUser();

        $this->type("emails", "email@hotmail.com,email2@hotmail.com,email3@hotmail.com,email4@hotmail.com");

        $this->select("nomeBolao", "label=Bolão Teste 1");

        $this->click("convidarAmigos");

        $this->waitForPageToLoad("30000");

        try {
            $this->verifyTextPresent($this->isTextPresent("Seus amigos foram convidados com sucesso!"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }

        //Sempre tava dando erro ao tentar apagar do banco de dados
        /*$this->receivedCon = new Conexao();
        $this->receivedCon->conect();

        for($i = 0; $i <1; $i++){
            $this->id_email=$this->arrOfEmailToDelete[$i];
            $this->receivedCon->query("$this->remocaoBD$this->id_email");
            
        }*/
    }

    //Nao consegui reproduzir o erro, só aconteceu uma vez
    //Quando tenta convidar alguém que já foi convidado, para o mesmo bolão o programa QUEBRA
    //SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'teste4@hotmail.com' for key 'PRIMARY'

}
?>
